home *** CD-ROM | disk | FTP | other *** search
/ F1 Licenseware / F1 Licenseware - Volume 1.iso / disks / 001.dms / 001.adf / source / MagnumProSource.AMOS / MagnumProSource.amosSourceCode < prev    next >
AMOS Source Code  |  1978-01-05  |  17KB  |  594 lines

  1. ' MAGNUM.AMOS (c)1992-1994 Wai Hung Liu (alias Khul) 
  2. '
  3. ' This source may not be resold, redistributed, or disfigured for release
  4. ' in any way, it is copyright material.  Offenders will be found!
  5. '
  6. ' The source is part of the MAGNUM PRO package available only from 
  7. ' the F1 Licenceware range.  If you have obtained this through other 
  8. ' means you are advised to delete this copy and purchase the original: 
  9. ' copies can be changed and could carry viruses and damage your Amiga! 
  10. '
  11. ' Considering the low price, there is no excuse for piracy.
  12. '
  13. ' (5.2.94) 
  14. '
  15. '
  16. ' *** Setup some amos system flags 
  17. ' *** Remove AMOS LOCK to enable Amiga-A multi-tasking 
  18. Set Buffer 40
  19. '
  20. '
  21. Amos Lock 
  22. Break Off 
  23. Track Loop On 
  24. Hide 
  25. '
  26. '
  27. ' *** Set up the panel gfx by loading it and packing it
  28. '
  29. Load Iff "magnum.panel",0
  30. Screen Hide 0 : Spack 0 To 5 : Screen Close 0
  31. '
  32. '
  33. ' *** Load up music, bug in TRACK LOAD extension, needs path tagged on 
  34. '
  35. ' MON 1/0 ... music on/off 
  36. ' MUZAK ... tracker music present  
  37. If Exist("magnum.music")=-1
  38.    BUG$=Dir$
  39.    Track Load BUG$+"magnum.music",3 : Led Off : MON=1 : MUZAK=True : Track Play 
  40. End If 
  41. '
  42. '
  43. ' *** bad loop to load title pics
  44. '
  45. If Exist("magnum.t1")=-1 Then A$="magnum.t1" : Gosub _SHOWPIC
  46. If Exist("magnum.t2")=-1 Then A$="magnum.t2" : Gosub _SHOWPIC
  47. If Exist("magnum.t3")=-1 Then A$="magnum.t3" : Gosub _SHOWPIC
  48. If Exist("magnum.t4")=-1 Then A$="magnum.t4" : Gosub _SHOWPIC
  49. If Exist("magnum.t5")=-1 Then A$="magnum.t5" : Gosub _SHOWPIC
  50. Goto FIN_INTRO
  51. ' *** subroutine to fade intro pictures in and out 
  52. _SHOWPIC:
  53. Load Iff A$,0 : Screen Hide 0
  54. GW=Screen Colour : Screen Open 1,100,10,GW,Lowres
  55. Screen Hide 1 : Flash Off : Curs Off 
  56. Get Palette 0
  57. Screen 0 : Fade 1 : Wait 15
  58. Screen Show 0 : Fade 3 To 1 : Wait 45 : Screen Close 1
  59. Wait 220 : Fade 2 : Wait 30 : Screen Close 0
  60. Return 
  61. FIN_INTRO:
  62. '
  63. '
  64. '
  65. ' -----------------------------------------------------------------------
  66. '              Define (global) variables for ascii reader
  67. ' -----------------------------------------------------------------------
  68. Dim ITEM$(500),BOOT$(500),RGB$(4)
  69. Dim PAGESTART(200),PAGEEND(200),PAGE_PEN(200)
  70. Global CURRENT_PAGE,PAGE_NUM,INDXL,ITEM$(),BOOT$(),TITLE$,RGB$(),POSITION2,NUM
  71. Global FILE_LENGTH,PAGESTART(),PAGEEND(),PAGE_LENGTH,FILE_PRESENT
  72. Global NO_INDEX,CUR_INDEX,PICCY,CUR_PEN,PAGE_PEN(),TXTFADE
  73. FILE_PRESENT=False
  74. CURRENT_PAGE=0
  75. PAGE_LENGTH=24
  76. CUR_INDEX=0
  77. NO_INDEX=1 : Rem 1 page as default
  78. CUR_PEN=1
  79. '
  80. '
  81. ' -----------------------------------------------------------------------
  82. MAKE_INDEX : SET_UP_SCREENS : Change Mouse 4 : Show : Screen 2
  83. '
  84. ' Loops are here, complicated!  Spaghetti junction...
  85. '
  86. Repeat 
  87.    Do 
  88.       '==========================================================================
  89.       Screen 1
  90.       POSITION1=Mouse Zone
  91.       Screen 2
  92.       '==========================================================================
  93.       If FILE_PRESENT=0 and PICCY=0
  94.          POSER=Mouse Zone
  95.          POSITION2=POSER+(CUR_INDEX*20)
  96.          If POSER and(POSER<>OLD)
  97.             If Left$(BOOT$(POSITION2-9),7)<>"*empty*"
  98.                Locate 0,POSER-6
  99.                Inverse On : Centre ITEM$(POSITION2-9)
  100.             End If 
  101.             If OLD
  102.                Locate 0,OLD-6
  103.                Inverse Off : Centre ITEM$(OLDEN-9)
  104.             End If 
  105.             OLD=POSER
  106.             OLDEN=POSITION2
  107.          End If 
  108.          If POSER=0 and OLD<>0
  109.             Inverse Off 
  110.             Locate 0,OLD-6
  111.             Centre ITEM$(OLDEN-9)
  112.             OLD=0
  113.             OLDEN=0
  114.          End If 
  115.          Inverse Off 
  116.       End If 
  117.       '==========================================================================
  118.       Screen 1
  119.       KEYS$=Inkey$
  120.       If KEYS$<>"" Then Exit 
  121.       Exit If Mouse Click
  122.    Loop 
  123.    '==========================================================================
  124.    If PICCY
  125.       If POSITION1=1 or Key State(69)
  126.          Screen Close 2 : OPEN_HIRES : SET_UP_INDEX : PICCY=0 : POSITION2=0 : OLD=0
  127.          Limit Mouse X Hard(0),Y Hard(0) To X Hard(640),Y Hard(256)
  128.       End If 
  129.       If(KEYS$="" and POSITION1=2) or(Upper$(KEYS$)="S")
  130.          If MUZAK=True
  131.             If MON=1
  132.                MON=0 : Track Stop 
  133.             Else 
  134.                MON=1 : Track Play 
  135.             End If 
  136.          End If 
  137.       End If 
  138.       If POSITION1=6 or((Key Shift=1 or Key Shift=2) and Key State(69))
  139.          End 
  140.       End If 
  141.       Goto ZZTOP
  142.    End If 
  143.    '==========================================================================
  144.    If(KEYS$="" and POSITION1=2) or(Upper$(KEYS$)="S")
  145.       If MUZAK=True
  146.          If MON=1
  147.             MON=0 : Track Stop 
  148.          Else 
  149.             MON=1 : Track Play 
  150.          End If 
  151.       End If 
  152.    End If 
  153.    '  ^- Sound on/off zone
  154.    If((Key Shift=1 or Key Shift=2) and Key State(69))
  155.       End 
  156.    End If 
  157.    '  ^- Quit by SHIFT+ESCAPE 
  158.    If Key State(69) and FILE_PRESENT Then SET_UP_INDEX : POSITION2=0 : OLD=0 : FILE_PRESENT=0
  159.    '  ^- Reset INDEX
  160.    '==========================================================================
  161.    If KEYS$="" Then Goto CHECK_D_ZONES
  162.    If KEYS$=Chr$(28) and FILE_PRESENT Then PAGE_DOWN
  163.    If KEYS$=Chr$(29) and FILE_PRESENT Then PAGE_UP
  164.    If KEYS$=Chr$(30) and FILE_PRESENT Then PAGE_SHOW[0]
  165.    If KEYS$=Chr$(31) and FILE_PRESENT Then PAGE_SHOW[PAGE_NUM-1]
  166.    If KEYS$=Chr$(32) and FILE_PRESENT Then CHOOSE_PAGE
  167.    If KEYS$=Chr$(69) and FILE_PRESENT Then SET_UP_INDEX : POSITION2=0 : OLD=0 : FILE_PRESENT=0
  168.    If KEYS$=Chr$(30) and FILE_PRESENT=0 Then CUR_INDEX=0 : SET_UP_INDEX : POSITION2=0 : OLD=0
  169.    If KEYS$=Chr$(31) and FILE_PRESENT=0 Then CUR_INDEX=NO_INDEX-1 : SET_UP_INDEX : POSITION2=0 : OLD=0
  170.    If KEYS$=Chr$(32) and FILE_PRESENT=0 Then CHOOSE_INDEX : POSITION2=0 : OLD=0
  171.    If KEYS$=Chr$(29) and FILE_PRESENT=0 Then INDEX_UP : POSITION2=0 : OLD=0
  172.    If KEYS$=Chr$(28) and FILE_PRESENT=0 Then INDEX_DOWN : POSITION2=0 : OLD=0
  173.    If POSITION2 and FILE_PRESENT=0 and(KEYS$=Chr$(13)) Then FILE_LOADER[BOOT$(POSITION2-9)]
  174.    Goto ZZTOP
  175.    '==========================================================================
  176.    CHECK_D_ZONES:
  177.    If POSITION1=1 and FILE_PRESENT Then SET_UP_INDEX : POSITION2=0 : OLD=0 : FILE_PRESENT=0
  178.    If POSITION1=3 and FILE_PRESENT Then PAGE_SHOW[0]
  179.    If POSITION1=4 and FILE_PRESENT Then PAGE_SHOW[PAGE_NUM-1]
  180.    If POSITION1=5 and FILE_PRESENT Then CHOOSE_PAGE
  181.    If POSITION1=9 and FILE_PRESENT Then PAGE_SHOW[0]
  182.    If POSITION1=10 and FILE_PRESENT Then PAGE_SHOW[PAGE_NUM-1]
  183.    If POSITION1=6 Then FINISH
  184.    If POSITION1=7 and FILE_PRESENT Then PAGE_UP
  185.    If POSITION1=8 and FILE_PRESENT Then PAGE_DOWN
  186.    If POSITION1=3 and FILE_PRESENT=0 Then CUR_INDEX=0 : SET_UP_INDEX : POSITION2=0 : OLD=0
  187.    If POSITION1=4 and FILE_PRESENT=0 Then CUR_INDEX=NO_INDEX-1 : SET_UP_INDEX : POSITION2=0 : OLD=0
  188.    If POSITION1=5 and FILE_PRESENT=0 Then CHOOSE_INDEX : POSITION2=0 : OLD=0
  189.    If POSITION1=7 and FILE_PRESENT=0 Then INDEX_UP : POSITION2=0 : OLD=0
  190.    If POSITION1=8 and FILE_PRESENT=0 Then INDEX_DOWN : POSITION2=0 : OLD=0
  191.    If POSITION1=9 and FILE_PRESENT=0 Then CUR_INDEX=0 : SET_UP_INDEX : POSITION2=0 : OLD=0
  192.    If POSITION1=10 and FILE_PRESENT=0 Then CUR_INDEX=NO_INDEX-1 : SET_UP_INDEX : POSITION2=0 : OLD=0
  193.    If POSITION2 and FILE_PRESENT=0 Then FILE_LOADER[BOOT$(POSITION2-9)]
  194.    '==========================================================================
  195.    ZZTOP:
  196.    POSER=0
  197.    POSITION1=0
  198.    KEYS$=""
  199.    Clear Key 
  200.    If PICCY
  201.       Screen 0 : Cls 0 : Home : Print ITEM$(POSITION2-9);
  202.       X$="Page 1 of 1" : Locate 79-Len(X$),0 : Print X$;
  203.    End If 
  204.    '==========================================================================
  205. Until False
  206. '
  207. '
  208. '
  209. '
  210. ' -----------------------------------------------------------------------
  211. '                           Procedures are here
  212. ' -----------------------------------------------------------------------
  213. Procedure FINISH
  214.    Timer=0
  215.    Repeat 
  216.       If Mouse Click and Mouse Zone=6 Then End 
  217.    Until Timer>45
  218. End Proc
  219. ' -----------------------------------------------------------------------
  220. Procedure PAGE_UP
  221.    If CURRENT_PAGE>0
  222.       Dec CURRENT_PAGE
  223.       PAGE_SHOW[CURRENT_PAGE]
  224.    End If 
  225. End Proc
  226. ' -----------------------------------------------------------------------
  227. Procedure PAGE_DOWN
  228.    If CURRENT_PAGE<PAGE_NUM-1
  229.       Inc CURRENT_PAGE
  230.       PAGE_SHOW[CURRENT_PAGE]
  231.    End If 
  232. End Proc
  233. ' -----------------------------------------------------------------------
  234. Procedure INDEX_UP
  235.    If CUR_INDEX>0
  236.       Dec CUR_INDEX
  237.       SET_UP_INDEX
  238.    End If 
  239. End Proc
  240. ' -----------------------------------------------------------------------
  241. Procedure INDEX_DOWN
  242.    If CUR_INDEX<NO_INDEX-1
  243.       Inc CUR_INDEX
  244.       SET_UP_INDEX
  245.    End If 
  246. End Proc
  247. ' -----------------------------------------------------------------------
  248. Procedure FILE_LOADER[F$]
  249.    TEMP=0
  250.    On Error Goto FATEL_ERROR4
  251.    If Left$(F$,7)="*empty*" Then Goto RECOVER_4
  252.    If Left$(F$,5)<>"*iff*" Then Goto TESTLOAD2
  253.    F$=F$-"*iff*"
  254.    Open In 1,F$
  255.    FILE_LENGTH=Lof(1)
  256.    Close 1
  257.    Erase 10
  258.    If Chip Free+Fast Free>FILE_LENGTH+1024
  259.       Load Iff F$,2
  260.       Screen Display 2,,56,,200
  261.       PICCY=True
  262.    End If 
  263.    Goto RECOVER_4
  264.    '
  265.    TESTLOAD2:
  266.    If Left$(F$,7)<>"*music*" Then Goto TXT
  267.    F$=F$-"*music*"
  268.    If Exist(F$)=-1
  269.       Track Stop : Erase 3 : Track Load F$,3 : Track Play 
  270.       MUZAK=1
  271.    End If 
  272.    Goto RECOVER_4
  273.    '
  274.    TXT:
  275.    Open In 1,F$
  276.    FILE_LENGTH=Lof(1)
  277.    Close 1
  278.    Erase 10
  279.    If Chip Free+Fast Free>FILE_LENGTH+1024
  280.       Reserve As Work 10,FILE_LENGTH
  281.       Bload F$,10
  282.       FILE_PROCESS
  283.       FILE_PRESENT=True
  284.    End If 
  285.    RECOVER_4:
  286.    Close 
  287.    Pop Proc
  288.    FATEL_ERROR4:
  289.    TEMP=1
  290.    Resume RECOVER_4
  291. End Proc[TEMP]
  292. ' -----------------------------------------------------------------------
  293. Procedure SET_UP_SCREENS
  294.    OPEN_HIRES
  295.    OPEN_TELETEXT
  296.    Unpack 5 To 1 : Erase 5
  297.    Screen Display 1,,259,,
  298.    Restore POSITION_OF_ZONES
  299.    Reserve Zone 10
  300.    For LOP=1 To 8
  301.       Read X1,X2
  302.       If LOP<7
  303.          Set Zone LOP,X1,6 To X2,33
  304.       Else 
  305.          Set Zone LOP,X1,14 To X2,24
  306.       End If 
  307.    Next LOP
  308.    Set Zone 9,295,4 To 306,14
  309.    Set Zone 10,295,24 To 306,34
  310.    Screen 0
  311.    Limit Mouse X Hard(0),Y Hard(0) To X Hard(640),Y Hard(256)
  312.    SET_UP_INDEX
  313.    For I=0 To 2
  314.       Screen I
  315.       Colour 18,Val("$"+RGB$(2))
  316.       Colour 19,Val("$"+RGB$(3))
  317.    Next I
  318.    POSITION_OF_ZONES:
  319.    Data 5,48,52,93,97,138,142,183,187,228,232,274,285,294,307,316
  320. End Proc
  321. '
  322. ' By writing an editor or just changing the zone sizes etc. and the panel you
  323. ' can create a much better user interface.  Originally I styled it on
  324. ' GrapeVine (Hi LSD!) which led to some people thinking GV was coded with
  325. ' Magnum...  It wasn't but if it was I would be wanting royalty payments off 
  326. ' LSD at this stage! 
  327. ' -----------------------------------------------------------------------
  328. Procedure OPEN_HIRES
  329.    Screen Open 2,640,200,8,Hires
  330.    Screen Hide 2
  331.    Screen Display 2,,56,,
  332.    Curs Off : Flash Off : Cls 0
  333.    Palette $0,$EEE,$C00,$CC0,$C0,$CC,$C,$C0C
  334.    Paper 0
  335.    If PICCY
  336.       Colour 18,Val("$"+RGB$(2))
  337.       Colour 19,Val("$"+RGB$(3))
  338.    End If 
  339.    Screen Show 2
  340. End Proc
  341. ' -----------------------------------------------------------------------
  342. Procedure OPEN_TELETEXT
  343.    Screen Open 0,640,9,2,Hires
  344.    Screen Hide 0
  345.    Screen Display 0,,44,,
  346.    Curs Off 
  347.    Colour 0,Val("$"+RGB$(0))
  348.    Colour 1,Val("$"+RGB$(1))
  349.    Paper 0
  350.    Pen 1
  351.    Set Curs 255,255,255,255,255,255,255,255
  352.    Screen Show 0
  353. End Proc
  354. ' -----------------------------------------------------------------------
  355. Procedure SET_UP_INDEX
  356.    Screen 0 : Cls 0 : Home 
  357.    Pen 1
  358.    Print "Index";
  359.    X$="Page"+Str$(CUR_INDEX+1)+" of"+Str$(NO_INDEX)
  360.    Locate 79-Len(X$),0 : Print X$;
  361.    '
  362.    Screen 2 : Palette 0,0,0,0,0,0,0,0 : Cls 0
  363.    Pen 1 : Home : Print TITLE$
  364.    Zoom 2,0,0,240,8 To 2,0,8,640,16
  365.    Pen 0 : Home : Print TITLE$ : Cdown : Cdown : Pen 1
  366.    '
  367.    ' This creates the larger text by stretching it
  368.    '
  369.    STA=CUR_INDEX*20
  370.    If NO_INDEX>CUR_INDEX+1
  371.       FIN=STA+19
  372.    Else 
  373.       FIN=INDXL-1
  374.       Q=FIN-STA
  375.       If Q>19
  376.          Q=Q-19
  377.          FIN=FIN-Q
  378.       End If 
  379.    End If 
  380.    '
  381.    Reserve Zone 28
  382.    Z=0
  383.    For I=STA To FIN
  384.       If ITEM$(I)<>""
  385.          If ITEM$(I)<>"*empty*"
  386.             Centre Zone$(ITEM$(I),Z+9)
  387.          End If 
  388.       End If 
  389.       Inc Z
  390.       Cdown 
  391.    Next I
  392.    Fade 1,0,$EEE,$C00,$CC0,$C0,$CC,$C,$C0C
  393.    Wait 15
  394.    TXTFADE=0 : Rem Turn off textfading
  395. End Proc
  396. ' -----------------------------------------------------------------------
  397. Procedure CHOOSE_PAGE
  398.    Screen 0 : Cls 0 : Clear Key : Pen 1
  399.    Input "Please enter page number to access:";A
  400.    Curs Off 
  401.    If A<1 or A>PAGE_NUM
  402.       Print "No such page."; : Wait 45
  403.       Cls 0 : Home 
  404.       Print ITEM$(POSITION2-9);
  405.       X$="Page"+Str$(NUM+1)+" of"+Str$(PAGE_NUM)
  406.       Locate 79-Len(X$),0 : Print X$;
  407.       Screen 1
  408.       Pop Proc
  409.    End If 
  410.    PAGE_SHOW[A-1]
  411.    CURRENT_PAGE=A-1
  412.    Screen 1
  413. End Proc
  414. ' -----------------------------------------------------------------------
  415. Procedure CHOOSE_INDEX
  416.    Screen 0 : Cls 0 : Clear Key : Pen 1
  417.    Input "Please enter page number to access:";A
  418.    Curs Off 
  419.    If A<1 or A>NO_INDEX
  420.       Print "No such page."; : Wait 45
  421.       Cls 0 : Home 
  422.       Print "Index";
  423.       X$="Page"+Str$(CUR_INDEX+1)+" of"+Str$(NO_INDEX)
  424.       Locate 79-Len(X$),0 : Print X$;
  425.       Screen 1
  426.       Pop Proc
  427.    End If 
  428.    CUR_INDEX=A-1
  429.    SET_UP_INDEX
  430.    Screen 1
  431. End Proc
  432. ' -----------------------------------------------------------------------
  433. Procedure MAKE_INDEX
  434.    ' Be sure to understand this first!  It loads in the index file and
  435.    ' processes it, writing the user text into relevant strings. 
  436.    ' Be careful!
  437.    '
  438.    Open In 1,"magnum.index"
  439.    Z=0
  440.    For I=0 To 3
  441.       Repeat 
  442.          X$=Input$(1,1)
  443.          If Asc(X$)=10 Then Exit 
  444.          RGB$(I)=RGB$(I)+X$
  445.       Until Eof(1)=-1
  446.    Next I
  447.    Repeat 
  448.       X$=Input$(1,1)
  449.       If Asc(X$)=10 Then Exit 
  450.       TITLE$=TITLE$+X$
  451.    Until Eof(1)=-1
  452.    '************************
  453.    Repeat 
  454.       Repeat 
  455.          X$=Input$(1,1)
  456.          If Asc(X$)=10 Then Exit 
  457.          ITEM$(Z)=ITEM$(Z)+X$
  458.       Until Eof(1)=-1
  459.       Repeat 
  460.          If Left$(ITEM$(Z),7)="*empty*" Then BOOT$(Z)="*empty*" : Exit 
  461.          X$=Input$(1,1)
  462.          If Asc(X$)=10 Then Exit 
  463.          BOOT$(Z)=BOOT$(Z)+X$
  464.       Until Eof(1)=-1
  465.       Inc ZAP
  466.       If ZAP=21 Then ZAP=0 : Inc NO_INDEX
  467.       Inc Z
  468.       If Z=200 Then Exit 
  469.    Until Lof(1)-Pof(1)<2
  470.    Close 1
  471.    INDXL=Z
  472. End Proc
  473. ' -----------------------------------------------------------------------
  474. Procedure FILE_PROCESS
  475.    CUR_PEN=1
  476.    '  ^-------------------------------- PEN COLOUR RESET
  477.    '
  478.    ' I pinched some of these bits from the _old_ ASCII reader in the AMOS 
  479.    ' package.  I was going to do my own then I noticed everyone was using 
  480.    ' _this_ same routine so why not join the band wagon eh? 
  481.    '
  482.    PAGE_NUM=0
  483.    LINES=-1
  484.    TEMP=0
  485.    COUNT=0
  486.    '   CONVERT
  487.    ST=Start(10)
  488.    EN=Start(10)+FILE_LENGTH
  489.    COUNT=ST
  490.    Repeat 
  491.       If PAGE_NUM=0
  492.          PAGESTART(PAGE_NUM)=ST
  493.       Else 
  494.          PAGESTART(PAGE_NUM)=COUNT+1
  495.       End If 
  496.       LINES=0
  497.       Repeat 
  498.          Inc LINES
  499.          Inc COUNT
  500.          TEMP=False
  501.          Repeat 
  502.             A=Hunt(COUNT To EN,Chr$(10))
  503.             If(A-COUNT>79) or A=0
  504.                Add COUNT,79
  505.                TEMP=True
  506.             Else 
  507.                COUNT=A
  508.             End If 
  509.          Until COUNT=>EN or A<>0 or TEMP=True
  510.       Until LINES=PAGE_LENGTH or COUNT=>EN
  511.       PAGEEND(PAGE_NUM)=COUNT
  512.       Inc PAGE_NUM
  513.    Until COUNT=>EN or PAGE_NUM=200
  514.    PAGEEND(PAGE_NUM-1)=EN
  515.    '------------------------------------------- cols
  516.    For ZQ=0 To PAGE_NUM-1
  517.       C_ST=PAGESTART(ZQ) : C_EN=PAGEEND(ZQ)
  518.       Do 
  519.          A=Hunt(C_ST To C_EN,"@")
  520.          If A
  521.             B=A
  522.             A=Peek(B+1)
  523.             If A>=49 and A<=55
  524.                PAGE_PEN(ZQ)=A-48
  525.                CRAPPY=True
  526.             End If 
  527.             C_ST=B+1
  528.          Else 
  529.             If CRAPPY=False
  530.                PAGE_PEN(ZQ)=1
  531.             End If 
  532.             Exit 
  533.          End If 
  534.       Loop 
  535.       CRAPPY=False
  536.    Next ZQ
  537.    '------------------------------------------- end cols  
  538.    Screen 0
  539.    Cls 0 : Home 
  540.    Print ITEM$(POSITION2-9);
  541.    PAGE_SHOW[0]
  542.    CURRENT_PAGE=0
  543.    Screen 1
  544. End Proc
  545. ' -----------------------------------------------------------------------
  546. Procedure PAGE_SHOW[NUM]
  547.    Screen 2
  548.    If TXTFADE=-1
  549.       Fade 1,0,0,0,0,0,0,0,0
  550.       Wait 15
  551.    Else 
  552.       Palette 0,0,0,0,0,0,0
  553.    End If 
  554.    Cls 0
  555.    '----------------------------------------------- finds text col
  556.    If NUM=0 Then CUR_PEN=1 Else CUR_PEN=PAGE_PEN(NUM-1)
  557.    Pen CUR_PEN
  558.    '
  559.    Home 
  560.    Inverse Off 
  561.    For I=PAGESTART(NUM) To PAGEEND(NUM)
  562.       A=Peek(I)
  563.       If Chr$(A)="@"
  564.          A=Peek(I+1)
  565.          If A>=49 and A<=55
  566.             Pen A-48 : CUR_PEN=A-48 : Inc I
  567.          Else 
  568.             If A=102
  569.                TXTFADE=-1 : Inc I
  570.             Else 
  571.                Print "@";
  572.             End If 
  573.          End If 
  574.       Else 
  575.          Print Chr$(A);
  576.          If A=10
  577.             Print Chr$(13);
  578.          End If 
  579.       End If 
  580.    Next I
  581.    If TXTFADE=-1
  582.       Fade 1,0,$EEE,$C00,$CC0,$C0,$CC,$C,$C0C
  583.       Wait 15
  584.    Else 
  585.       Palette 0,$EEE,$C00,$CC0,$C0,$CC,$C,$C0C
  586.    End If 
  587.    Screen 0
  588.    Cls 0 : Home 
  589.    Print ITEM$(POSITION2-9);
  590.    X$="Page"+Str$(NUM+1)+" of"+Str$(PAGE_NUM)
  591.    Locate 79-Len(X$),0 : Print X$;
  592.    Screen 1
  593.    CURRENT_PAGE=NUM
  594. End Proc